package com.shujia.day05;


/*
    代码块：在Java中，使用{}括起来的代码被称为代码块，根据其位置和声明的不同，可以分为局部代码块，构造代码块，静态代码块，
            同步代码块(多线程讲解)。

    局部代码块：
        就是在方法内部定义的代码块，使用一个{}括起来，作用是用于限定变量的生命周期，作用域
            对于无效的对象或者变量，可以使用局部代码块括起来，当运行完成后，就可以对其进行销毁，提高内存的使用效率

    构造代码块：
        在类中方法外定义的，同样是使用{}括起来 每构造一个对象都会执行一次
        执行顺序 先执行 构造代码块，之后再去执行构造函数（如果存在多个构造代码块，那么会依照顺序先后执行对应的构造代码块）
        作用：放到继承再详细描述


    静态代码块：
        在类中方法外定义，使用static对{}进行修饰
        执行顺序： 静态代码块 --> 构造代码块 --> 构造函数
        注意：在整个程序中只会执行一次


 */

class Code {

    static int a = 10;
    {
        System.out.println("陆阳很帅...");
    }

    // 静态代码块
    static {
        System.out.println("这是一个静态代码块...");
    }

    public Code() {
        System.out.println("这是一个无参构造");
    }

    // 构造代码块
    {
        System.out.println("潘海洋很帅...");
    }



}


public class Code10Demo {
    // 程序运行是从main函数开始
    public static void main(String[] args) {

        // 局部代码块
        {
            int a = 20;
            int b = 10;
            System.out.println(a + b);

            Code code = new Code();
        }

        // 由于 a 和 b 定义在上一个局部代码块中，所以其作用域在代码块的内部，对于外部调用时，获取不到对应的变量
//        System.out.println(a+b);


        Code code = new Code();

        System.out.println(Code.a);


    }
}
